import { MidwayConfig } from '@midwayjs/core';
import { busboyConfig } from '@config/busboy.config';

export default {
  // use for cookie sign key, should change to your own and keep security
  keys: 'xxx', // 自定义
  koa: {
    port: 7002,
    // 添加跨域配置
    cors: {
      origin: '*', // 允许所有来源（生产环境建议指定具体域名，如 ['https://yourdomain.com']）
      allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH', // 允许的HTTP方法
      allowHeaders: 'Content-Type,Authorization', // 允许的请求头
      credentials: true, // 是否允许携带Cookie（跨域请求时）
      exposeHeaders: 'Content-Length,Date,ETag', // 允许客户端获取的响应头
    },
  },
  validate: {
    enable: true,
    validationOptions: {
      allowUnknown: true, // 允许未定义的字段
      abortEarly: true,
      stripUnknown: true, // 剔除参数中的未定义属性
    },
  },
  jwt: {
    secret: 'xxx', // 自定义
    expiresIn: '2d', // 2天过期
  },

  // 文件上传配置
  busboy: busboyConfig,

  redis: {
    client: {
      host: 'localhost',
      port: 6379,
      password: '',
      db: 0,
    },
    // 增加重连配置
    retryStrategy: (times: number) => {
      const delay = Math.min(times * 50, 2000);
      return delay;
    },
    reconnectOnError: (err: Error) => {
      const targetError = 'READONLY';
      if (err.message.includes(targetError)) {
        return true;
      }
      return false;
    },
  },

  typeorm: {
    dataSource: {
      default: {
        type: 'mysql',
        host: 'localhost',
        port: 3306,
        username: 'jx3',
        password: 'jx3123456',
        database: 'jx3',
        synchronize: false, // 如果第一次使用，不存在表，有同步的需求可以写 true，注意会丢数据
        logging: false,
        entities: ['entity'],
        timezone: '+08:00', // 避免时间误差8小时
        dateStrings: true, // 时间字段返回字符串
        bigNumberStrings: false, // 避免大数字被截断转String类型
      },
    },
  },
} as MidwayConfig;
